package br.ifpi.leds.sgi.entidades.pessoas;

import java.util.GregorianCalendar;


import br.ifpi.leds.sgi.entidades.contatos.Contato;

public class Pessoa {
	
	public static final int SEXO_MASCULINO = 1;
	public static final int SEXO_FEMININO = 2;
	
	public static final int ESTADO_CIVIL_NAODEFINIDO = 0;
	public static final int ESTADO_CIVIL_SOLTEIRO = 1;
	public static final int ESTADO_CIVIL_CASADO = 2;
	public static final int ESTADO_CIVIL_VIUVO = 3;
	public static final int ESTADO_CIVIL_DIVORCIADO = 4;
	
	

	/**
	 * Identificador unico do estudante
	 */
	private Long cpf;
	
	/**
	 * Nome completo sem abreviacoes
	 */
	private String nome;
	
	/**
	 * Define o sexo: masculino ou feminino
	 */
	private int sexo;
	
	//Versao concreta mais comum da interface Calendar
	/**
	 * Data de nascimento
	 */
	private GregorianCalendar dataDeNascimento;
	
	/**
	 * Estado Civil Legal
	 */
	private int estadoCivil;
	
	/**
	 * Informacoes de contato
	 */
	private Contato contato;

	/**
	 * @param cpf Identificador unico do estudante
	 * @param nome Nome completo sem abreviacoes
	 * @param sexo Define o sexo: masculino ou feminino
	 * @param dataDeNascimento Data de nascimento
	 * @param estadoCivil Estado Civil Legal
	 * @param contato Informacoes de contato
	 */
	public Pessoa(Long cpf, String nome, int sexo, GregorianCalendar dataDeNascimento, int estadoCivil, Contato contato) {
		
		
		this.cpf = cpf;
		this.nome = nome;
		this.sexo = sexo;
		this.dataDeNascimento = dataDeNascimento;
		this.estadoCivil = estadoCivil;
		this.contato = contato;
	}

	public Pessoa(){
		
	}

	/**
	 * @return the cpf
	 */
	public Long getCpf() {
		return cpf;
	}



	/**
	 * @param cpf the cpf to set
	 */
	public void setCpf(Long cpf) {
		this.cpf = cpf;
	}



	/**
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * @param nome the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * @return the sexo
	 */
	public int getSexo() {
		return sexo;
	}

	/**
	 * @param sexo the sexo to set
	 */
	public void setSexo(int sexo) {
		this.sexo = sexo;
	}

	/**
	 * @return the dataDeNascimento
	 */
	public GregorianCalendar getDataDeNascimento() {
		return dataDeNascimento;
	}

	/**
	 * @param dataDeNascimento the dataDeNascimento to set
	 */
	public void setDataDeNascimento(GregorianCalendar dataDeNascimento) {
		this.dataDeNascimento = dataDeNascimento;
	}

    /**
     * @return the estadoCivil
     */
    public int getEstadoCivil() {
            return estadoCivil;
    }

    /**
     * @param estadoCivil the estadoCivil to set
     */
    public void setEstadoCivil(int estadoCivil) {
            this.estadoCivil = estadoCivil;
    }

	  /**
     * @return the contato
     */
    public Contato getContato() {
            return contato;
    }

    /**
     * @param contato the contato to set
     */
    public void setContato(Contato contato) {
            this.contato = contato;
    }

    public boolean isNomeValido(){
    	
    	if(getNome().length() <= 100){
    		return true;
    	}else{
    		return false;
    	}
    	
    }

	 @Override
     public String toString() {
             return "Pessoa [cpf=" + cpf + ", nome=" + nome + ", sexo=" + sexo
                             + ", dataDeNascimento=" + dataDeNascimento + ", estadoCivil="
                             + estadoCivil + ", contato=" + contato + "]";
     }


	

}
